import axios from 'axios'
import qs from 'qs'
import '@/untils/configUrl.js';

// http request 拦截器(请求之前拦截)
axios.interceptors.request.use(
    config => {
        if (store.token) {  // 判断是否存在token，如果存在的话，则每个http header都加上token
            config.headers.Authorization = `token ${store.token}`;
        }
        return config;
    },
    err => {
        return Promise.reject(err);
    }
);
 
 
// http response 拦截器(请求之后拦截)
axios.interceptors.response.use(
    response => {
        return response;
    },
    error => {
        if (error.response) {
            switch (error.response.status) {
                case 401:
                    // 返回 401 清除token信息并跳转到登录页面
                    store.commit(types.LOGOUT);
                    router.replace({
                        path: 'login',
                        // query: {redirect: router.currentRoute.fullPath} //带参提示
                    })
            }
        }
        return Promise.reject(error.response.data)   // 返回接口返回的错误信息
    }
);

global.requestGet = function (url,params, successfun, errorfun) {
    axios.get(url, {
            params: params,
        })
        .then((res) => {
            // console.log(res);
            // console.log(res.data.code);
            // 根据后台code类型处理
            if (res.data.code == 404) {  // 非法请求
                console.log('非法请求');
            } else  {                // 请求成功
                console.log('请求成功');
                successfun(res);
            }
        })
        .catch((error) => {
            errorfun(error);
        })
};

global.requestPost = function (url, params, successfun, errorfun) {
    return new Promise((resolve, reject) => {
        // console.log(config)
        axios({
            url:url,
            method:'post',
            data:qs.stringify(params)
        })
        .then((res) => {
            if (res.data.code == 404) {  // 非法请求
                console.log('非法请求');
            } else  {                // 请求成功
                console.log('请求成功');
                successfun(res);
            }
        })
        .catch((error) => {
            errorfun(error)
        })
    })
};


export {
    requestGet,
    requestPost,
}
